package com.ruoyi.course.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import java.util.concurrent.TimeUnit;

@Service
public class RedisService {

    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    private static final String VERIFICATION_CODE_PREFIX = "email_verification:"; // 邮箱验证码的 key 前缀

    /**
     * 保存验证码到 Redis，并设置过期时间
     * @param email 用户邮箱
     * @param verificationCode 验证码
     * @param expireMinutes 验证码过期时间（分钟）
     */
    public void saveVerificationCode(String email, String verificationCode, long expireMinutes) {
        ValueOperations<String, String> ops = redisTemplate.opsForValue();
        String key = VERIFICATION_CODE_PREFIX + email;
        ops.set(key, verificationCode, expireMinutes, TimeUnit.MINUTES); // 设置过期时间
    }

    /**
     * 校验验证码是否正确且未过期
     * @param email 用户邮箱
     * @param verificationCode 用户输入的验证码
     * @return 校验结果
     */
    public boolean verifyCodeAndLogin(String email, String verificationCode) {
        ValueOperations<String, String> ops = redisTemplate.opsForValue();
        String key = VERIFICATION_CODE_PREFIX + email;

        // 获取存储在 Redis 中的验证码
        String storedVerificationCode = ops.get(key);

        // 如果验证码不存在或已过期
        if (storedVerificationCode == null) {
            return false;
        }

        // 如果验证码正确且未过期
        return storedVerificationCode.equals(verificationCode);
    }
}
